package com.sky.properties;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
 * 1. 当前包名: com.sky.properties    存放与配置属性相关的类
 * 2. 当前类名: WeChatProperties    微信支付配置类
 */

/**
 * WeChatProperties; 用于读取和封装微信小程序支付相关的配置信息。
 * 通过 Spring Boot 的 `@ConfigurationProperties` 注解将配置文件中以 `sky.wechat` 为前缀的属性绑定到该类。
 */
@Component
@ConfigurationProperties(prefix = "sky.wechat")
@Data
public class WeChatProperties {
    /**
     * * 知识点:
     * 1. @Component：表示这是一个由 Spring 容器管理的组件，可以在任何地方通过注入使用。
     * 2. @ConfigurationProperties(prefix = "sky.wechat")：将配置文件中以 `sky.wechat` 开头的属性自动绑定到当前类的字段。
     * 3. @Data：Lombok 注解，自动为类生成 getter、setter、equals、hashCode 和 toString 方法，避免样板代码。
     * 4. 应用场景：通过封装微信支付配置，统一管理支付对接所需的敏感信息，提升安全性和可维护性。
     */
    private String appid; //小程序的appid，来源于微信开放平台
    private String secret; //小程序的秘钥，微信小程序的 App Secret，开发者用于调用小程序 API 的凭证
    private String mchid; //商户号，由微信支付平台提供，用于唯一标识商户身份
    private String mchSerialNo; //商户API证书的证书序列号，用于接口签名验证
    private String privateKeyFilePath; //商户私钥文件，通常为 .pem 文件
    private String apiV3Key; //证书解密的密钥，用于解密微信回调数据中的敏感字段
    private String weChatPayCertFilePath; //平台证书（用于验签）
    private String notifyUrl; //支付成功的回调地址（回调接口 URL）
    private String refundNotifyUrl; //退款成功的回调地址（回调接口 URL）

}
/**
 * 仿写：
 *AliPayProperties; 用于读取和封装与支付宝支付相关的配置信息。
 *  通过 Spring Boot 的 `@ConfigurationProperties` 注解将配置文件中以 `sky.alipay` 为前缀的属性绑定到该类。
 * @Component
 * @ConfigurationProperties(prefix = "sky.alipay")
 * @Data
 * public class AliPayProperties {
 * // 支付宝的应用 ID（APP ID）
 *     private String appid;
 *     // 支付宝的商户号（商户身份标识）
 *     private String partner;
 *     // 支付宝的秘钥
 *     private String privateKey;
 *     // 支付宝公钥
 *     private String alipayPublicKey;
 *     // 支付宝网关地址
 *     private String gatewayUrl;
 *     // 支付回调通知地址
 *     private String notifyUrl;
 *     // 支付成功后跳转的页面地址
 *     private String returnUrl;
 *     // 支付宝的证书路径
 *     private String alipayCertPath;
 *     // 支付宝公钥证书路径
 *     private String alipayPublicCertPath
 *     // 支付宝根证书路径
 *     private String alipayRootCertPath;
 *}
 */